èªåã³ãŒãã¬ãã¥ãŒã§ã³ãŒãå質ãåäžãããéçºãå¹çåãã°ããŒãã«åæ£ããŒã ã®ããã®ãã¹ããã©ã¯ãã£ã¹ãããŒã«ãå©ç¹ãæ¢æ±ããŸãã
ã³ãŒãå質ïŒã°ããŒãã«ããŒã ã®ããã®èªåã³ãŒãã¬ãã¥ãŒã®ç¿åŸ
仿¥ã®ããŒã¹ã®éããœãããŠã§ã¢éçºã®ç¶æ³ã§ã¯ãé«ãã³ãŒãå質ãç¶æããããšãæãéèŠã§ããããã¯ãç°ãªãã¿ã€ã ãŸãŒã³ãã¹ãã«ã¬ãã«ãã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã§äœæ¥ããã°ããŒãã«ããŒã ã«ãšã£ãŠç¹ã«éèŠã§ããèªåã³ãŒãã¬ãã¥ãŒã¯ãäžè²«æ§ã確ä¿ãããšã©ãŒãæžãããéçºãµã€ã¯ã«ãå éããããã®åŒ·åãªããŒã«ãšããŠç»å ŽããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ãã°ããŒãã«ãªã³ã³ããã¹ãã§èªåã³ãŒãã¬ãã¥ãŒãå®è£ ããããã®å©ç¹ããã¹ããã©ã¯ãã£ã¹ãããã³å©çšå¯èœãªããŒã«ã«ã€ããŠèª¬æããŸãã
èªåã³ãŒãã¬ãã¥ãŒãšã¯äœã§ããïŒ
éçè§£æãšãåŒã°ããèªåã³ãŒãã¬ãã¥ãŒã§ã¯ããœãããŠã§ã¢ããŒã«ã䜿çšããŠããœãŒã¹ã³ãŒããèªåçã«ã¹ãã£ã³ããŠã次ã®ãããªæœåšçãªåé¡ãæ€åºããŸãã
- ã³ãŒãã¹ã¿ã€ã«ã®éåïŒãã©ãŒããããåœåèŠåãããã³ã³ãŒãã£ã³ã°æšæºã«ãããäžæŽåã
- ãã°ãšè匱æ§ïŒæœåšçãªã»ãã¥ãªãã£äžã®æ¬ é¥ãè«çãšã©ãŒãããã³ããã©ãŒãã³ã¹ã®ããã«ããã¯ã
- ã³ãŒãã®èãïŒå°æ¥ãä¿å®æ§ã®åé¡ã«ã€ãªããå¯èœæ§ã®ããæé©ã§ãªãã³ãŒãã£ã³ã°ãã©ã¯ãã£ã¹ã
- è€éæ§ã®åé¡ïŒé床ã«è€éã§çè§£ãé£ããã³ãŒãã»ã¯ã·ã§ã³ã
ã³ãŒãã®äººçæ€æ»ã䌎ãæåã³ãŒãã¬ãã¥ãŒãšã¯ç°ãªããèªåã³ãŒãã¬ãã¥ãŒã¯ãœãããŠã§ã¢ããŒã«ã«ãã£ãŠå®è¡ãããŸããããã«ãããç¹ã«å€§èŠæš¡ãªã³ãŒãããŒã¹ã®å Žåãããé«éã§äžè²«æ§ã®ããåæãå¯èœã«ãªããŸãã
ã°ããŒãã«ããŒã åãã®èªåã³ãŒãã¬ãã¥ãŒã®å©ç¹
èªåã³ãŒãã¬ãã¥ãŒãå®è£ ãããšãã°ããŒãã«ããŒã ã«å€ãã®å©ç¹ããããŸãã
1. ã³ãŒãå質ãšäžè²«æ§ã®åäž
èªååãããããŒã«ã¯ãã³ãŒãã£ã³ã°æšæºãšãã¹ããã©ã¯ãã£ã¹ãé©çšãããã¹ãŠã®ã³ãŒããäžè²«ããã¹ã¿ã€ã«ã«æºæ ããŠããããšãä¿èšŒããŸããããã¯ãéçºè ã®ããã¯ã°ã©ãŠã³ããã³ãŒãã£ã³ã°ã®å¥œã¿ãç°ãªãå¯èœæ§ã®ããã°ããŒãã«ããŒã ã«ãšã£ãŠç¹ã«éèŠã§ããããšãã°ãã€ã³ãããã©ãžã«ããã€ãã®ã¡ã³ããŒãããããŒã ã¯ãSonarQubeã®ãããªããŒã«ã䜿çšããŠãéçºè ã®å Žæãããã¯ã°ã©ãŠã³ãã«é¢ä¿ãªãããã¹ãŠã®ãããžã§ã¯ãã§å ±éã®ã³ãŒãã£ã³ã°ã«ãŒã«ã»ãããé©çšã§ããŸãã
2. ãšã©ãŒãšãã°ã®åæž
æœåšçãªãã°ãšè匱æ§ãèªåçã«æ€åºããããšã«ãããèªåã³ãŒãã¬ãã¥ãŒã¯ãšã©ãŒãæ¬çªç°å¢ã«å°éããã®ãé²ããŸããããã«ãããéçºãµã€ã¯ã«ã®æ©ã段éã§åé¡ããã£ããããããšã«ãããæéãšãªãœãŒã¹ãå€§å¹ ã«ç¯çŽã§ããŸããããŒã«ã¯ãnullãã€ã³ã¿äŸå€ããªãœãŒã¹ãªãŒã¯ãSQLã€ã³ãžã§ã¯ã·ã§ã³ã®è匱æ§ãªã©ã®äžè¬çãªééããç¹å®ããé倧ãªé害ã®ãªã¹ã¯ã軜æžã§ããŸããããšãã°ãCoverityã¯C++ã³ãŒãã®æœåšçãªã»ãã¥ãªãã£ã®è匱æ§ã«ãã©ã°ãç«ãŠãããšãã§ããEUãªã©ã®å³æ ŒãªããŒã¿ãã©ã€ãã·ãŒèŠå¶ã®ããåœã®ããŒã ãã³ã³ãã©ã€ã¢ã³ã¹ãç¶æããã®ã«åœ¹ç«ã¡ãŸãã
3. éçºãµã€ã¯ã«ã®é«éå
èªåã³ãŒãã¬ãã¥ãŒã¯ãéçºè ã«å³åº§ã«ãã£ãŒãããã¯ãæäŸããåé¡ãè¿ éãã€å¹ççã«ä¿®æ£ã§ããããã«ããŸããããã«ãããæåã³ãŒãã¬ãã¥ãŒã«è²»ããæéãççž®ãããå šäœçãªéçºããã»ã¹ãå éãããŸããéçºè ã¯ãç°ãªãã¿ã€ã ãŸãŒã³ã®ååããã®ãã£ãŒãããã¯ãåŸ ã€å¿ èŠã¯ãããŸãããçºçããåé¡ã解決ã§ããŸãã ESLintãPrettierãªã©ã®ããŒã«ã䜿çšããããªã³ãããããã¯ã¯ãã³ãŒããã³ããããããåã«ã³ãŒããèªåçã«ãã©ãŒãããããåºæ¬çãªãšã©ãŒããã£ããã§ãããããã¯ãŒã¯ãããŒå šäœã®å¹çãåäžããŸãã
4. ç¥èã®å ±æãšã³ã©ãã¬ãŒã·ã§ã³ã®åŒ·å
èªåã³ãŒãã¬ãã¥ãŒããŒã«ã¯ãæ€åºãããåé¡ã®è©³çްãªèª¬æãæäŸããéçºè ãã³ãŒãã£ã³ã°ã¹ãã«ãåŠç¿ããã³åäžãããã®ã«åœ¹ç«ã¡ãŸããããã¯ããžã¥ãã¢éçºè ããããžã§ã¯ãã«äžæ £ããªéçºè ã«ãšã£ãŠç¹ã«æçã§ããããã«ãå ±æãããã³ãŒãåè³ªæšæºã«ãããããŒã ã¡ã³ããŒéã®ããè¯ãã³ãã¥ãã±ãŒã·ã§ã³ãšã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ãããŸããéçºè ãã³ãŒãã£ã³ã°ã«ãŒã«ã®èåŸã«ããæ ¹æ ãçè§£ãããšãåŠç¿ãšç¶ç¶çãªæ¹åã®æåãè²ãŸããŸããç°ãªãå°åã®ããŒã ã¡ã³ããŒã¯ãåãèªååæã¬ããŒãã確èªããåé¡ã«ã€ããŠå¹æçã«è©±ãåãããšãã§ããŸãã
5. æ°ããããŒã ã¡ã³ããŒã®ãªã³ããŒãã£ã³ã°ã®æ¹å
èªååãããããŒã«ã«ãã£ãŠé©çšãããäžè²«ããã³ãŒãã£ã³ã°æšæºã«ãããæ°ããããŒã ã¡ã³ããŒã¯ã³ãŒãããŒã¹ãçè§£ãã广çã«è²¢ç®ãããããªããŸããããã«ãããåŠç¿æ²ç·ãççž®ããããªã³ããŒãã£ã³ã°ããã»ã¹ãå éãããŸããæ°ããåŸæ¥å¡ã¯ã以åã®çµéšã«é¢ä¿ãªããããŒã ã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãšãã¹ããã©ã¯ãã£ã¹ã«ããã«é©å¿ã§ããŸããæåã®ã³ãŒãéä¿¡ã§èªåãã§ãã¯ãå®è¡ããããšã«ãããæ°ããããŒã ã¡ã³ããŒã¯ããã«ãã£ãŒãããã¯ãåãåããããŒã ã®ã³ãŒãã£ã³ã°æšæºãããè¿ éã«åŠç¿ã§ããŸãã
6. ã³ã¹ãåæž
ãšã©ãŒãæ©æã«ãã£ããããæåã³ãŒãã¬ãã¥ãŒã®å¿ èŠæ§ãæžããããšã«ãããèªåã³ãŒãã¬ãã¥ãŒã¯éçºã³ã¹ããå€§å¹ ã«åæžã§ããŸããæ¬çªç°å¢ã§ãã°ãä¿®æ£ããæ¹ããéçºäžã«ä¿®æ£ãããããã¯ããã«ã³ã¹ããããããŸããã³ãŒãã¬ãã¥ãŒããã»ã¹ãèªååãããšããœãããŠã§ã¢éçºã©ã€ããµã€ã¯ã«ã®åŸåã®æ®µéã§èŠã€ãã£ãåé¡ã®æåã³ãŒãã¬ãã¥ãŒãšä¿®åŸ©ã«è²»ããéçºè ã®æéãåæžãããŸãã
èªåã³ãŒãã¬ãã¥ãŒãå®è£ ããããã®ãã¹ããã©ã¯ãã£ã¹
èªåã³ãŒãã¬ãã¥ãŒã®ã¡ãªãããæå€§éã«æŽ»çšããã«ã¯ã次ã®ãã¹ããã©ã¯ãã£ã¹ã«åŸãããšãéèŠã§ãã
1. é©åãªããŒã«ãéžæãã
ããã°ã©ãã³ã°èšèªãéçºç°å¢ãããã³ããŒã èŠæš¡ã«é©ããããŒã«ãéžæããŸããããŒã«ã®ç²ŸåºŠãããã©ãŒãã³ã¹ã䜿ãããããæ¢åã®ããŒã«ãšã®çµ±åãªã©ã®èŠçŽ ãæ€èšããŠãã ããããªãŒãã³ãœãŒã¹ã®ãªã³ã¿ãŒããåçšéçåæãã©ãããã©ãŒã ãŸã§ã倿°ã®ãªãã·ã§ã³ãå©çšå¯èœã§ããç¹å®ã®ããŒãºã«åºã¥ããŠããŒã«ã調æ»ããã³è©äŸ¡ããŸããèšèªãµããŒããCI/CDãã€ãã©ã€ã³ãšã®çµ±åãããã³çæããã¬ããŒãã®çš®é¡ãªã©ã®èŠçŽ ãæ€èšããŠãã ããã
2. æç¢ºãªã³ãŒãã£ã³ã°æšæºãå®çŸ©ãã
ãã¹ãŠã®ããŒã ã¡ã³ããŒãåŸãå¿ èŠã®ããæç¢ºã§ååã«ææžåãããã³ãŒãã£ã³ã°æšæºã確ç«ããŸããããã«ãããèªåã³ãŒãã¬ãã¥ãŒã®äžè²«ããåºç€ãæäŸãããå šå¡ãåãèªèãæã£ãŠããããšã確èªã§ããŸããã³ãŒãã£ã³ã°æšæºã¯ãåœåèŠåããã©ãŒãããã«ãŒã«ããšã©ãŒãšäŸå€ãåŠçããããã®ãã¹ããã©ã¯ãã£ã¹ãªã©ã®åŽé¢ãç¶²çŸ ããå¿ èŠããããŸããæ¬¡ã«ãããŒã«ãæ§æããŠããããã®æšæºãèªåçã«é©çšã§ããŸãããããã®æšæºãåºãé åžããã³å®£äŒããç°¡åã«ã¢ã¯ã»ã¹ã§ããããã«ããŸããäŸïŒPythonã®å Žåã¯PEP 8ãJavaã®å Žåã¯Google Style GuideããŸãã¯Airbnbã®JavaScript Style Guideã䜿çšããŸãã
3. CI/CDãã€ãã©ã€ã³ãšã®çµ±å
èªåã³ãŒãã¬ãã¥ãŒãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ããã³ç¶ç¶çããªããªãŒïŒCI/CDïŒãã€ãã©ã€ã³ã«çµ±åããŸããããã«ãããã³ãŒããã³ããããŸãã¯ããŒãžããããã³ã«ãã³ãŒãã®åé¡ãèªåçã«ã¹ãã£ã³ãããããã«ãªããŸããããã«ãããéçºè ã«ç¶ç¶çãªãã£ãŒãããã¯ãæäŸããããšã©ãŒãæ¬çªç°å¢ã«å°éããã®ãé²ããŸãã JenkinsãGitLab CIãCircleCIãGitHub Actionsãªã©ã®äžè¬çãªCI/CDããŒã«ã¯ãèªåã³ãŒãã¬ãã¥ãŒããŒã«ãšç°¡åã«çµ±åããŠãéçºããã»ã¹ãåçåã§ããŸããã³ãŒãã¬ãã¥ãŒã¯ãæ©ããŠé »ç¹ã«è¡ãããå¿ èŠããããŸããç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ããã»ã¹ã®äžéšãšããŠçµ±åãããã¹ãŠã®ã³ãŒãã³ããããèªåçã«ãã§ãã¯ãããããã«ããŸãã
4. ã«ãŒã«ãšæ§æã®ã«ã¹ã¿ãã€ãº
ç¹å®ã®ã³ãŒãã£ã³ã°æšæºãšãããžã§ã¯ãèŠä»¶ã«åãããŠãèªåã³ãŒãã¬ãã¥ãŒããŒã«ãæ§æããŸããããã«ã¯ãã«ãŒã«ã®ã«ã¹ã¿ãã€ãºããããå€ã®èª¿æŽãããã³ç¹å®ã®ãã§ãã¯ã®ç¡å¹åãå«ãŸããå ŽåããããŸããç¹å®ã®ããŒãºãšã³ã³ããã¹ãã«åãããŠããŒã«ã調æŽããŸããããã©ã«ãæ§æãç²ç®çã«äœ¿çšããããšã¯é¿ããŠãã ãããããšãã°ããããžã§ã¯ãã®ãªã¹ã¯èš±å®¹åºŠã«åºã¥ããŠãç¹å®ã®èŠåã®é倧床ãã«ã¹ã¿ãã€ãºã§ããŸãã
5. ããŒã ã®æè²ãšãã¬ãŒãã³ã°
èªåã³ãŒãã¬ãã¥ãŒããŒã«ã®äœ¿ç𿹿³ãšçµæã®è§£éæ¹æ³ã«ã€ããŠãããŒã ã«ãã¬ãŒãã³ã°ãæäŸããŸããããã«ãããæ€åºãããåé¡ãšãã®ä¿®æ£æ¹æ³ãçè§£ããã®ã«åœ¹ç«ã¡ãŸããã¯ãŒã¯ã·ã§ãããéå¬ããã³ãŒãå質ã®éèŠæ§ãšèªååãããããŒã«ã®åœ¹å²ã説æããããã¥ã¡ã³ããæäŸããŸããéçºè ãããŒã«ããã®èŠåããã¹ãã«ãåŠã³ãåäžãããæ©äŒãšããŠæ±ãããã«å¥šå±ããŸãã
6. ããã»ã¹ãç¶ç¶çã«æ¹åãã
èªåã³ãŒãã¬ãã¥ãŒããã»ã¹ã宿çã«ã¬ãã¥ãŒããã³æŽæ°ããŠã广çãã€é©åã§ããããšã確èªããŸããããã«ã¯ãæ°ããã«ãŒã«ã®è¿œå ãæ¢åã®ã«ãŒã«ã®èª¿æŽãããã³ããŒã ããã®ãã£ãŒãããã¯ã®çµã¿èŸŒã¿ãå«ãŸããå ŽåããããŸããææ°ã®ã³ãŒãã£ã³ã°ãã¹ããã©ã¯ãã£ã¹ãææ°ã®ç¶æ ã«ä¿ã¡ãããããã³ãŒãã£ã³ã°æšæºããã³èªåãã§ãã¯ã«çµã¿èŸŒã¿ãŸããæ€åºããããã°ã®æ°ãã³ãŒãã¬ãã¥ãŒã«è²»ããããæéãããã³å šäœçãªã³ãŒãå質ãªã©ã®ã¡ããªãã¯ã远跡ããããšã«ãããããã»ã¹ã®æå¹æ§ãç£èŠããŸãã
人æ°ã®ããèªåã³ãŒãã¬ãã¥ãŒããŒã«
æã人æ°ã®ããèªåã³ãŒãã¬ãã¥ãŒããŒã«ã次ã«ç€ºããŸãã
- SonarQubeïŒã³ãŒãå質ã®ç¶ç¶çãªæ€æ»ã®ããã®äžè¬çãªãªãŒãã³ãœãŒã¹ãã©ãããã©ãŒã ãå¹ åºãããã°ã©ãã³ã°èšèªããµããŒãããã³ãŒãã®èãããã°ãããã³è匱æ§ã«é¢ãã詳现ãªã¬ããŒããæäŸããŸãã
- CoverityïŒé«åºŠãªãã°æ€åºãšã»ãã¥ãªãã£åæãæäŸããåçšéçåæããŒã«ãå€§èŠæš¡ã§è€éãªãããžã§ã¯ãã«ç¹ã«é©ããŠããŸãã
- Fortify Static Code AnalyzerïŒã³ãŒãå ã®ã»ãã¥ãªãã£ã®è匱æ§ãç¹å®ããããã®åçšããŒã«ãå¹ åºãããã°ã©ãã³ã°èšèªããµããŒãããæœåšçãªã»ãã¥ãªãã£ãªã¹ã¯ã«é¢ãã詳现ãªã¬ããŒããæäŸããŸãã
- ESLintïŒJavaScriptããã³TypeScriptçšã®äžè¬çãªãªã³ã¿ãŒãã³ãŒãã£ã³ã°æšæºãé©çšããäžè¬çãªãšã©ãŒãé²ãã®ã«åœ¹ç«ã¡ãŸãã
- PrettierïŒã³ãŒããäžè²«ããã¹ã¿ã€ã«ã«èªåçã«ãã©ãŒããããããæèŠã®ããã³ãŒããã©ãŒããã¿ãŒãå¹ åºãããã°ã©ãã³ã°èšèªããµããŒãããŠããŸãã
- PMDïŒJavaãJavaScriptãApexãVisualforceãXMLãXSLçšã®ãªãŒãã³ãœãŒã¹ã®éçåæããŒã«ãæªäœ¿çšã®å€æ°ã空ã®ãã£ãããããã¯ãäžèŠãªãªããžã§ã¯ãäœæãé床ã«è€éãªã³ãŒããªã©ãäžè¬çãªããã°ã©ãã³ã°ã®æ¬ é¥ãæ€åºããŸãã
- FindBugsïŒïŒçŸåšã¯SpotBugsïŒJavaã³ãŒãã®ãã°ãèŠã€ããããã®ãªãŒãã³ãœãŒã¹ã®éçåæããŒã«ã
- CodeClimateïŒèªåã³ãŒãã¬ãã¥ãŒãšã³ãŒãå質ã¡ããªãã¯ãæäŸããåçšãã©ãããã©ãŒã ã
äºäŸç ç©¶
äºäŸç ç©¶1ïŒã°ããŒãã«Eã³ããŒã¹äŒæ¥
ç±³åœããšãŒããããã¢ãžã¢ã«éçºããŒã ãæã€å€§æeã³ããŒã¹äŒæ¥ã¯ãSonarQubeãå®è£ ããŠããã¹ãŠã®ãããžã§ã¯ãã§ã³ãŒãã£ã³ã°æšæºãé©çšããŸãããããã«ãããæ¬çªç°å¢ã§å ±åããããã°ã®æ°ã20ïŒ åæžãããã³ãŒãã®äžè²«æ§ãå€§å¹ ã«åäžããŸãããå ±æãããæšæºã«ãããç°ãªãå°åã®ããŒã ã¡ã³ããŒéã®ããè¯ãã³ã©ãã¬ãŒã·ã§ã³ãšã³ãã¥ãã±ãŒã·ã§ã³ãä¿é²ãããŸããã
äºäŸç ç©¶2ïŒå€åœç±éèæ©é¢
ã°ããŒãã«éèæ©é¢ã¯ãCoverityãå®è£ ããŠãJavaããã³C++ã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ã®è匱æ§ãæ€åºããŸãããããã«ãããå瀟ã¯å³æ ŒãªèŠå¶èŠä»¶ãéµå®ããæœåšçãªããŒã¿äŸµå®³ãé²ãããšãã§ããŸããããã®ããŒã«ã¯ãæåã³ãŒãã¬ãã¥ãŒäžã«èŠèœãšãããããã€ãã®é倧ãªã»ãã¥ãªãã£äžã®æ¬ é¥ãç¹å®ããå瀟ã«å€å€§ãªã³ã¹ããšè©å€ã®æå®³ãåé¿ããŸããã
çµè«
èªåã³ãŒãã¬ãã¥ãŒã¯ãã°ããŒãã«ãªãœãããŠã§ã¢éçºããŒã ã«ãšã£ãŠäžå¯æ¬ ãªãã©ã¯ãã£ã¹ã§ããã³ãŒãå質ã®åäžããšã©ãŒã®åæžãããã³éçºãµã€ã¯ã«ã®å éã«ãããéçºããã»ã¹ã®å¹çãšæå¹æ§ãå€§å¹ ã«åäžãããããšãã§ããŸãããã®ã¬ã€ãã§æŠèª¬ãããŠãããã¹ããã©ã¯ãã£ã¹ã«åŸããé©åãªããŒã«ãéžæããããšã«ãããã°ããŒãã«ããŒã ã¯èªåã³ãŒãã¬ãã¥ãŒã®åãæŽ»çšããŠãäžçäžã®é¡§å®¢ã®ããŒãºãæºããé«å質ã®ãœãããŠã§ã¢ãæ§ç¯ã§ããŸããèªåã³ãŒãã¬ãã¥ãŒãžã®æè³ã¯ããœãããŠã§ã¢ãããžã§ã¯ãã®é·æçãªæåãšã°ããŒãã«éçºããŒã ã®å šäœçãªçç£æ§ãžã®æè³ã§ãã
å®è¡å¯èœãªæŽå¯
- å°ããå§ããïŒããŒã å šäœã«å±éããåã«ãå°ããªãã€ããããããžã§ã¯ãã§èªåã³ãŒãã¬ãã¥ãŒã®å®è£ ãéå§ããŸãã
- éèŠãªé åã«çŠç¹ãåœãŠãïŒã»ãã¥ãªãã£ã«ææãªã³ãŒããããã©ãŒãã³ã¹ãéèŠãªã»ã¯ã·ã§ã³ãªã©ãã³ãŒãããŒã¹ã®æãéèŠãªé åãèªåã¬ãã¥ãŒã®ããã«åªå ããŸãã
- ããŒã ã®è³åãåŸãïŒããŒã ã«èªåã³ãŒãã¬ãã¥ãŒã®ã¡ãªããã説æããããã»ã¹ãåãå ¥ããããã«ä¿ããŸãã
- ç¶ç¶çã«ç£èŠããã³æ¹åããïŒèªåã³ãŒãã¬ãã¥ãŒã®çµæã宿çã«ç¢ºèªããå¿ èŠã«å¿ããŠããã»ã¹ã調æŽããŸãã
- ã³ãŒãåè³ªã®æåãåãå ¥ããïŒã³ãŒãå質ãéèŠããã誰ããã¯ãªãŒã³ã§ä¿å®å¯èœãªã³ãŒããäœæãã責任ãããæåãè²ã¿ãŸãã
ãããã®ååãåãå ¥ããããšã«ãããã°ããŒãã«ããŒã ã¯èªåã³ãŒãã¬ãã¥ãŒã®å¯èœæ§ãæå€§éã«åŒãåºããã°ããŒãã«åžå Žã®èŠæ±ãæºããé«å質ã®ãœãããŠã§ã¢ãæäŸã§ããŸãã